package PersonStu.sanqi;

/**
 * @Author：DijaH
 * @Date：2022/12/29 12:56 下午
 * @Version：1.0.0
 * @Description：
 * 规定1和A对应，2和B对应，3和C对应。
 * 那么一个数字字符串"111"，就可以转换为：AAA/KA/AK
 * 给定一个数字字符串，返回这个字符串有多少中转换方式。
 */
public class code_20_ConvertToLetterString {

    public static int convert(String str){
        if(str == null || str == ""){
            return 0;
        }
       return process(str.toCharArray(),0);
    }

    private static int process(char[] str,int i) {
        //base case
        if(i == str.length){
            return 1;
        }
        if(str[i] == 0){
            return 0;
        }
        int ways = process(str,i + 1);
        if(i +1< str.length && (str[i] - '0') * 10 + str[i+1] - '0' < 27){
            ways += process(str,i + 2);
        }

        return ways;
    }

    public static void main(String[] args) {
        String str = "111";
//        System.out.println(('2' - '0') * 10 + ('3' - '0'));
//        System.out.println(('3' - '0') * 10);
        int convert = convert(str);
        System.out.println(convert);
    }
}
